﻿var cantPost = 0;
var traerMasPost = true;
var indice = 0;
var CANTIDAD_SCROLL = 5;
var idLogueado = 0;
var postOverflow = 63;
var ESCRIBI = 'Escribi un comentario...';



function cleanLoader() {
    $('#loaderDiv').slideUp();
}

function traerTopTen(idLogueado) {
    var parametros = "{'idLogueado':'" + idLogueado + "'}";
    LlamarWebService("../Servicios/Post.asmx/BuscarTopTenPost", parametros, pintarTopTen, FuncionFallo);
}

function htmlTopTen(post) {
    var html = '<li id="topTen' + post.Id + '" class="topTenItem">' +
    '<img class="foto-post" src="' + post.IdCreador.urlFotoPerfil + '" alt="foto-perfil" onclick="verUsuario(' + post.IdCreador.IdUsuario + ')">' +
    '<span class="tituloTopTen"><a href="VerPost.aspx?postId=' + post.Id + '&usuarioId=' + post.IdCreador.IdUsuario + '">' + post.Titulo + '</a></span><span class="cantidadBancadas">' + post.CantidadBancan + '</span>';
    

    return html;
}

function pintarTopTen(posts) {
    $.each(posts, function (index, post) {
        $(htmlTopTen(post)).appendTo('#listaTopTen');

    });
    
}

function traerUsuarioLogueado(usuario) {
        $('#nombreUsuario').append(usuario.Nombre + ' ' + usuario.Apellido);
        $('#fotoPerfilUsuario').append('<img class="PhotoPerfil" src="' + usuario.urlFotoPerfil + '" alt="Foto perfil" /><br />');
        $('#tipoUsuario').append(usuario.tipoUsuario);
}

function traerUsuario(id) {
    var wsUsuario = new WSUsuario("../servicios/Usuario.asmx/TraerUsuario");
    wsUsuario.buscarUsuario(id, traerUsuarioLogueado);

}

function traerContactos(IdUsuario, cantidad) {
    var wsUsuario = new WSUsuario("../servicios/Usuario.asmx/TraerContactos");
        wsUsuario.buscarContactos(IdUsuario, cantidad, traerContactosDelUsuario);
}

function traerContactosDelUsuario(usuarios) {
    if (usuarios != 0) {
        $.each(usuarios, function (index, usuario) {
            $(htmlUsuario(usuario)).appendTo('#MisContactos');
            
        });
    }
    else {
        $('#ContainerbtnVerTodos').hide();
        $('<div style="margin-left: 10px">No tiene contactos</div>').appendTo('#MisContactos');
    }
}

function setIdUsuarioLogueado(idUsuario) {
    idLogueado = idUsuario;
}

function htmlUsuario(usuario) {
    var nombreUsuario = usuario.Nombre + ' ' + usuario.Apellido;
    return '<div class="alpha ContacoPerfil omega">' +
			        '<div class="alpha grid_1 omega">' +
			            '<img class="SmallPhotoPerfil" src="' + usuario.urlFotoPerfil + '" alt="Foto perfil" onclick="verUsuario(' + usuario.IdUsuario + ');" />' +
			        '</div>' +
			        '<div class="alpha grid_2 omega">' +
                        '<a class="userLink" href="VerUsuario.aspx?idUsuario=' + usuario.IdUsuario + '"><b>' + (nombreUsuario.length<19?nombreUsuario:(nombreUsuario.substr(0,18) + '...')) + '</b></a><br />' +
                    '</div>' +
                '</div>' +
                '<div class="clear"></div>';
}
        
function traerPosts(IdUsuario, cantidad, WSFuncion) {

    $('<div id="loader" class="caja-post alpha ContenidoPagina" style="height:60px; display:none;"><img src="../Images/ajaxLoader.gif" /></div>').appendTo('#post-nuevos');
    $('#loader').slideDown();
        var wsUsuario = new WSUsuario(WSFuncion);


        wsUsuario.ObtenerPostsSeguidos(IdUsuario, indice, cantidad, idLogueado, traerPostsSeguidos);

        $('#loader').slideUp();
        $('#loader').remove();
                

}

function htmlPost(post) {

    return '<div id="post' + post.Id + '" class="caja-post alpha ContenidoPagina" style="display:none;">' +
            '<img class="foto-post" src="' + post.IdCreador.urlFotoPerfil + '" alt="foto-perfil" onclick="verUsuario(' + post.IdCreador.IdUsuario + ');" />' + '<div class="creador">' + '<a class="userLink" href="VerUsuario.aspx?idUsuario=' + post.IdCreador.IdUsuario + '"><b>' + post.IdCreador.Nombre + ' ' + post.IdCreador.Apellido + '</b></a>' + '</div>' +
            '<div class="titulo-post"><a href="VerPost.aspx?postId=' + post.Id + '&usuarioId=' + post.IdCreador.IdUsuario + '">' + post.Titulo + '</a></div>' +
            '<div id="contenidoPost' + post.Id + '" class="contenido-preview">' + (post.Contenido.length < postOverflow ? post.Contenido : (post.Contenido.substring(0, postOverflow - 1) + '...')) +
            '<br/><a href="VerPost.aspx?postId=' + post.Id + '&usuarioId=' + post.IdCreador.IdUsuario + '">Ver más</a></div>' +
            (post.CantidadBancan > 0 ? ('<div cant="' + post.CantidadBancan + '" id="bancanPost' + post.Id + '" class="bancanComentario"><a onclick="verBancadoresPost(' + post.Id + ')">' + post.CantidadBancan + (post.CantidadBancan > 1 ? ' usuarios bancan este post</a></div>' : ' usuario banca este post</a></div>')) : '') +
            (post.PermitirBancar == "True" ? ('<div id="bancarPost' + post.Id + '" class="bancar"><a onclick="bancarPost(' + post.Id + ');">bancar post</a></div>') : '<div class="bancando">bancas este post<div>') +
            '<div id="comentariosPost' + post.Id + '" class="caja-comentarios"></div>' + '</div>';

}

function bancarPost(postId) {
    var bancadores = $('#bancanPost' + postId).attr('cant');
    bancadores++;
    $('#bancanPost' + postId).empty();
    $('<a onclick="verBancadoresPost(' + postId + ')">' + bancadores + (bancadores > 1 ? ' usuarios bancan este post</a></div>' : ' usuario banca este post</a></div>')).appendTo('#bancanPost' + postId);

    $('#bancan' + postId).attr('cant', bancadores);
    var parametros = "{'idPost':'" + postId + "', 'idUsuario':'" + idLogueado + "'}";
    LlamarWebService("../Servicios/Usuario.asmx/BancarPost", parametros, function () { }, FuncionFallo);
    $('#bancarPost' + postId).slideUp();
    $('<div id="bancandoPost' + postId + '" class="bancando" style="display:none;">bancas este post<div>').appendTo('#post' + postId);
    $('#bancandoPost' + postId).slideDown();
}

function verUsuario(idUsuario) {
    location.href = "VerUsuario.aspx?idUsuario=" + idUsuario;
}

function borrarComentario(comentarioId) {
    var parametros = "{'comentarioId':'" + comentarioId + "'}";
    LlamarWebService("../Servicios/Comentario.asmx/BorrarComentario", parametros, function () { }, function () { });
    $('.comentario#' + comentarioId).slideUp();
    $('.comentario#'+comentarioId).remove();
}

function htmlComentario(comentario, oculto) {

    return '<div class="comentario" id="' + comentario.Id + '" ' + (oculto?'style="display:none;"':'') +' postid="'+comentario.PostId+'">' +
                        '<img class="foto-post" src="' + comentario.Usuario.urlFotoPerfil + '" alt="foto-perfil" onclick="verUsuario(' + comentario.Usuario.IdUsuario + ');" />' +
                        '<div class="creador">' + '<a class="userLink" href="VerUsuario.aspx?idUsuario=' + comentario.Usuario.IdUsuario + '"><b>' + comentario.Usuario.Nombre + ' ' + comentario.Usuario.Apellido + '</b></a>' + '</div>' +
                        '<div class="texto-comentario">' + comentario.TextoComentario + '</div>' +
                        (comentario.Usuario.IdUsuario == idLogueado ? '<div class="deleteButton" onclick="borrarComentario(' + comentario.Id + ');"><b>X</b></div>' : '') +
                        (comentario.CantidadBancan > 0 ? ('<div cant="' + comentario.CantidadBancan + '" id="bancan' + comentario.Id + '" class="bancanComentario"><a onclick="verBancadoresComentario(' + comentario.Id + ')">' + comentario.CantidadBancan + (comentario.CantidadBancan > 1 ? ' usuarios bancan este comentario</a></div>' : ' usuario banca este comentario</a></div>')) : '') +
                        (comentario.PermitirBancar == "True" ? ('<div id="bancarComentario' + comentario.Id +'" class="bancar"><a onclick="bancarComentario(' + comentario.Id +');">bancar comentario</a></div>') : '<div class="bancando">bancas este comentario<div>') +
                    '</div>';

}

function bancarComentario(comentarioId) {
    var bancadores = $('#bancan' + comentarioId).attr('cant');
    if (bancadores == 0) {
        $('<div cant="' + bancadores + '" id="bancan' + comentarioId + '" class="bancanComentario"></div>').appendTo('.comentario[id=' + comentarioId + ']')
    }
    bancadores ++;
    $('#bancan' + comentarioId).empty();
    $('<a onclick="verBancadoresComentario(' + comentarioId + ')">' + bancadores + (bancadores > 1 ? ' usuarios bancan este comentario</a></div>' : ' usuario banca este comentario</a></div>')).appendTo('#bancan' + comentarioId);

    $('#bancan' + comentarioId).attr('cant', bancadores);
    var parametros = "{'idComentario':'" + comentarioId + "', 'idUsuario':'" + idLogueado + "'}";
    LlamarWebService("../Servicios/Usuario.asmx/BancarComentario", parametros, function () { }, FuncionFallo);
    $('#bancarComentario' + comentarioId).slideUp();
    $('<div id="bancandoComentario' + comentarioId + '" class="bancando" style="display:none;">bancas este comentario<div>').appendTo('.comentario[id=' + comentarioId + ']');
    $('#bancandoComentario' + comentarioId).slideDown();
}



function abrirBancadores(cantidadBancadores) {
    var altura = (100 * Math.ceil(cantidadBancadores / 2)) + 45;
    $('#bancadores').empty();
    $('<h2 class="titulo" id="UsuariosBancan">Usuarios que bancan</h2>').appendTo('#bancadores');
    $('<div id="cerrarBancadores" onclick="cerrarBancadores();"><b>x</b>').appendTo('#bancadores');
    $('#bancadores').css('height', altura + 'px');
    $('html,body').animate({
        scrollTop: $('#scroll').offset().top
    }, 1000);
    $('#bancadores').slideDown();
}

function verBancadoresComentario(comentarioId) {

    var parametros = "{'idComentario':'" + comentarioId + "'}";
    LlamarWebService("../Servicios/Usuario.asmx/TraerUsuariosBancanComentario", parametros, pintarBancadores, FuncionFallo);
    
}

function verBancadoresPost(idPost) {
    var parametros = "{'idPost':'" + idPost + "'}";
    LlamarWebService("../Servicios/Usuario.asmx/TraerUsuariosBancanPost", parametros, pintarBancadores, FuncionFallo);
}

function pintarBancadores(usuarios) {
    abrirBancadores(usuarios.length);
    $.each(usuarios, function (index, usuario) {
        $('<div class="contUsuario">' + htmlUsuario(usuario) + '</div>').appendTo('#bancadores');
    });
    
}

function cerrarBancadores() {
    $('#bancadores').slideUp();
}

function traerPostsSeguidos(posts) {
    cleanLoader();
    if (posts != 0) {
        $.each(posts, function (index, post) {

            $(htmlPost(post)).appendTo('#post-nuevos');
            var comentarios = post.Comentarios;
            var i = 0;
            var oculto;
            if (comentarios.length >= 4) {
                $('<div class="masComentariosDiv"><a postid="' + post.Id + '" class="masComentarios">Ver más comentarios</a></div>').appendTo('#comentariosPost' + post.Id);
            }
            $.each(comentarios, function (indice, comentario) {
                oculto = true;
                if (i > comentarios.length - 4) {
                    oculto = false;
                    i++;
                }
                $(htmlComentario(comentario, oculto)).appendTo('#comentariosPost' + comentario.PostId);
            });


            $('<div class="caja-comentar">' +
            '<textarea id="comentarPostId' + post.Id + '" class="texto-comentar vacio" >' + ESCRIBI + '</textarea>' +
            '<input type="button" class="comentar butoon recuadro" value="Comentar" onclick="Comentar(' + idLogueado + ',' + post.Id + ');"/>' +
            '</div>').appendTo('#comentariosPost' + post.Id);
            $('#post' + post.Id).slideDown("slow");

            cantPost++;
            indice++;

        });
    }
    else {
        var htmlDiv = $('#post-nuevos').html();
        if (htmlDiv == "")
            $('<div class="ContenidoPagina"><div style="margin-left: 10px">No hay posts para mostrar</div></div>').appendTo('#post-nuevos');
    }
    
    return false;
}

function Comentar(IdUsuario, postId) {
    if (ValidarComentario() == true) {
        var parametros = "{" +
                        "'UsuarioId':'" + IdUsuario + "'," +
                        "'Comentario':'" + $("#comentarPostId" + postId).val() + "'," +
                        "'PostId':'" + postId + "'" +
                      "}";

        LlamarWebService("../Servicios/Comentario.asmx/ComentarPostDTO", parametros, verComentario, FuncionFallo);
    }
}

function ValidarComentario() {
    var valida = true;
    if ($("#comentarPostId" + postId).val() == "" || $("#comentarPostId" + postId).val() == ESCRIBI) {
        valida = false;
    }
    return valida;
}

function verComentario(comentario) {
    $('#comentarPostId' + comentario.PostId).parent().remove();
    $(htmlComentario(comentario, false)).appendTo('#comentariosPost' + comentario.PostId);
    $('<div class="caja-comentar">' +
            '<textarea id="comentarPostId' + comentario.PostId + '" class="texto-comentar vacio" >' + ESCRIBI + '</textarea>' +
            '<input type="button" class="comentar butoon recuadro" value="Comentar" onclick="Comentar(' + idLogueado + ',' + comentario.PostId + ');"/>' +
     '</div>').appendTo('#comentariosPost' + comentario.PostId);
}

function aunMasPosts() {
    $('#traerMasPosts').remove();
    cantPost = 0;
    traerMasPost = true;
}



$(document).ready(function () {
    $('.masComentarios[postid]').live('click', function () {
        $(this).parent().slideUp();
        var selector = '.comentario[postid=' + $(this).attr('postid') + ']';
        $(selector).show();
    });
    $('textarea').live('focus', function () {
        if ($(this).text() == ESCRIBI) {
            $(this).empty();
            $(this).text('');
            $(this).removeClass('vacio');
            $(this).addClass('con-texto');
        }
    });
    $('textarea').live('blur', function () {
        if ($(this).text() == '' || $(this).val() == ESCRIBI) {
            $(this).empty();
            $(this).text(ESCRIBI);
            $(this).removeClass('con-texto');
            $(this).addClass('vacio');
        }
    });
});

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else

        return decodeURIComponent(results[1].replace(/\+/g, " "));
}


function IrAVerTodos(idUsuario) {
    window.location = "VerTodos.aspx?idUsuario=" + idUsuario ;
}